# -*- coding: UTF-8 -*- 
'''
Created on 02/04/2013

@author: rubenbarroso
'''

#En esta clase se describen las colecciones en python y se realizan pruebas.

'''
LISTAS - mutables - son secuenciales
'''
#Declaracion de una lista
l = [22, True, "una lista", [1, 2]]

#Ejemplos de acceso
print l
print l[3]
print l[3][0]
#Curiosidad python, acceso a listas con indices negativos:
print l[-1]

#Ejemplo de modificacion
l[3] = "cambiado"
print l

#Ejemplo slicing o acceso mediante rangos.
mi_var = l[0:2]
print mi_var
print l[2:]
print l[:2]

#Ejemplo modificacion compleja.
l = [99, True, "una lista", [1, 2]]
l[0:2] = [0, 1] # l vale [0, 1, "una lista", [1, 2]]

'''
TUPLAS - inmutables - secuenciales
'''
#Declaracion de tuplas
t = (1, 2, True, "python")
#Declaracion tuplas 1 elemento
t2 = (1,)

'''
Diccionarios - mutables - no secuenciales
'''
# KEY - VALOR
d = {"Love Actually ": "Richard Curtis",
"Kill Bill": "Tarantino",
"Amélie": "Jean-Pierre Jeunet"}

#Acceso al diccionario
d["Love Actually "] # devuelve "Richard Curtis"

#Reasignar valores a una clave
d["Kill Bill"] = "Quentin Tarantino"

#En los diccionarios no se puede hacer slicing ya que no son secuenciales.


'''
Curiosidad cadenas texto
'''
#Las cadenas de texto tambien son secuencias (como listas y tuplas) y permiten
# realizar slicing
c = "hola mundo"
c[0]# h
c[5:] # mundo
c[::3] # hauo



